<?php
header ( 'Content-type:text/html;charset=utf-8' );
date_default_timezone_set('PRC');
include_once '../sdk/acp_service.php';
include_once '../ZZYMessage/Message.php';
/**
* 重要：联调测试时请仔细阅读注释！
* 
* 产品：代付产品<br>
* 交易：建立委托：后台交易，只有同步应答<br>
* 日期： 2017-07<br> 
* 版本： 1.0.0
* 版权： 中国银联<br>
* 说明：以下代码只是为了方便商户测试而提供的样例代码，商户可以根据自己需要，按照技术文档编写。该代码仅供参考，不提供编码性能规范性等方面的保障<br>
* 该接口参考文档位置：open.unionpay.com帮助中心 下载  产品接口规范  《代付产品接口规范》<br>
*              《平台接入接口规范-第5部分-附录》（内包含应答码接口规范）<br>
* 测试过程中的如果遇到疑问或问题您可以：1）优先在open平台中查找答案：
* 							        调试过程中的问题或其他问题请在 https://open.unionpay.com/ajweb/help/faq/list 帮助中心 FAQ 搜索解决方案
*                             测试过程中产生的7位应答码问题疑问请在https://open.unionpay.com/ajweb/help/respCode/respCodeList 输入应答码搜索解决方案
*                          2） 咨询在线人工支持： open.unionpay.com注册一个用户并登陆在右上角点击“在线客服”，咨询人工QQ测试支持。
* 交易说明:同步交易，不需要接收后台通知或发起交易状态查询交易
*/
 

//TODO 
//姓名，证件类型+证件号码至少二选一必送，手机号可选，贷记卡的cvn2,expired可选。
$logger = com\unionpay\acp\sdk\LogUtil::getLogger();
if(!isset($_POST["orderId"]) || !isset($_POST["phoneNo"]) || !isset($_POST["accNo"]) || !isset($_POST["certifId"]) || !isset($_POST["customerNm"])){
	$logger->LogInfo ( $_POST["orderId"]."代收授权缺少参数。" );
	$message = new com\unionpay\acp\message\Message(['accountsid'=>"8126c72e85ea153f086b513c002ac2af",'token'=>"dd01e7ef6ba384b0438099c15f776909"]);
	$RandParam=$_POST["orderId"].",".'代收授权失败';
	$message -> SendSms('67b509eb875242c3a1bfcfcc895ef29a','309743',$RandParam,"15334509852",0);
	echo 0;exit;
}
$customerInfo = array (
 		'phoneNo' => $_POST["phoneNo"], //手机号
		'certifTp' => '01', //证件类型，01-身份证
		'certifId' => $_POST["certifId"], //证件号，15位身份证不校验尾号，18位会校验尾号，请务必在前端写好校验代码
		'customerNm' => $_POST["customerNm"] //姓名
  		//'cvn2' => '248', //cvn2
  		//'expired' => '1912', //有效期，YYMM格式，持卡人卡面印的是MMYY的，请注意代码设置倒一下
);

$params = array(

		//以下信息非特殊情况不需要改动
		'version' => com\unionpay\acp\sdk\SDKConfig::getSDKConfig()->version,		           //版本号
		'encoding' => 'utf-8',		           //编码方式
		'signMethod' => com\unionpay\acp\sdk\SDKConfig::getSDKConfig()->signMethod,		           //签名方法
		'txnType' => '72',		               //交易类型
		'txnSubType' => '11',		           //交易子类
		'bizType' => '000501',		           //业务类型
		'accessType' => '0',		           //接入类型
		'channelType' => '07',		           //渠道类型
		'encryptCertId' => com\unionpay\acp\sdk\AcpService::getEncryptCertId(), //验签证书序列号
		
		//TODO 以下信息需要填写
		'merId' => com\unionpay\acp\sdk\SDKConfig::getSDKConfig()->merId,		//商户代码，请改自己的测试商户号，此处默认取demo演示页面传递的参数
		'orderId' =>$_POST["orderId"].date('YmdHis'),	//商户订单号，8-32位数字字母，不能含“-”或“_”，此处默认取demo演示页面传递的参数，可以自行定制规则
		'txnTime' => date('YmdHis'),	//订单发送时间，格式为YYYYMMDDhhmmss，取北京时间，此处默认取demo演示页面传递的参数
		 
// 		'accNo' => $accNo,     //卡号，敏感信息不加密方式
// 		'customerInfo' => com\unionpay\acp\sdk\AcpService::getCustomerInfo($customerInfo), //持卡人身份信息，敏感信息不加密方式
		'accNo' => com\unionpay\acp\sdk\AcpService::encryptData($_POST["accNo"]),     //卡号，敏感信息加密方式
		'customerInfo' => com\unionpay\acp\sdk\AcpService::getCustomerInfoWithEncrypt($customerInfo), //持卡人身份信息，敏感信息加密方式
);

com\unionpay\acp\sdk\AcpService::sign ( $params ); // 签名
$url = com\unionpay\acp\sdk\SDKConfig::getSDKConfig()->backTransUrl;
$logger->LogInfo ( $_POST["orderId"]."代收授权" );
$result_arr = com\unionpay\acp\sdk\AcpService::post ( $params, $url);
if(count($result_arr)<=0) { //没收到200应答的情况
	echo 0;exit;
}


if (!com\unionpay\acp\sdk\AcpService::validate ($result_arr) ){
	$logger->LogInfo ( $_POST["orderId"]."代收授权应答报文验签失败" );
	$message = new com\unionpay\acp\message\Message(['accountsid'=>"8126c72e85ea153f086b513c002ac2af",'token'=>"dd01e7ef6ba384b0438099c15f776909"]);
	$RandParam=$_POST["orderId"].",".'代收授权失败';
	$message -> SendSms('67b509eb875242c3a1bfcfcc895ef29a','309743',$RandParam,"15334509852",0);
	echo 0;exit;
}

$logger->LogInfo ( $_POST["orderId"]."代收授权应答报文验签成功" );
if ($result_arr["respCode"] == "00"){
    //TODO
    $logger->LogInfo ( $_POST["orderId"]."代收授权成功" );
	echo 1;exit;
}else {
    //其他应答码做以失败处理
     //TODO
	 $logger->LogInfo ( $_POST["orderId"]."代收授权失败：". $result_arr );
	 $message = new com\unionpay\acp\message\Message(['accountsid'=>"8126c72e85ea153f086b513c002ac2af",'token'=>"dd01e7ef6ba384b0438099c15f776909"]);
	 $RandParam=$_POST["orderId"].",".'代收授权失败';
	 $message -> SendSms('67b509eb875242c3a1bfcfcc895ef29a','309743',$RandParam,"15334509852",0);
	 echo 0;exit;
}

/**
 * 打印请求应答
 *
 * @param
 *        	$url
 * @param
 *        	$req
 * @param
 *        	$resp
 */
function printResult($url, $req, $resp) {
	echo "=============<br>\n";
	echo "地址：" . $url . "<br>\n";
	echo "请求：" . str_replace ( "\n", "\n<br>", htmlentities ( com\unionpay\acp\sdk\createLinkString ( $req, false, true ) ) ) . "<br>\n";
	echo "应答：" . str_replace ( "\n", "\n<br>", htmlentities ( com\unionpay\acp\sdk\createLinkString ( $resp , false, false )) ) . "<br>\n";
	echo "=============<br>\n";
}